home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amicdfilesystem / src / iso9660.h < prev    next >
C/C++ Source or Header  |  1994-10-03  |  3KB  |  99 lines

  1. /* iso9660.h: */
  2.  
  3. #ifndef _ISO9660_H_
  4. #define _ISO9660_H_
  5.  
  6. #include "generic.h"
  7.  
  8. typedef struct directory_record {
  9.   unsigned char         length;
  10.   unsigned char         ext_attr_length;
  11.   unsigned long         extent_loc_i;
  12.   unsigned long         extent_loc_m;
  13.   unsigned long        data_length_i;
  14.   unsigned long        data_length_m;
  15.   unsigned char        year;
  16.   unsigned char        month;
  17.   unsigned char        day;
  18.   unsigned char        hour;
  19.   unsigned char        minute;
  20.   unsigned char        second;
  21.   char            tz;
  22.   unsigned char        flags;
  23.   unsigned char        file_unit_size;
  24.   unsigned char        gap_size;
  25.   unsigned short    sequence_i;
  26.   unsigned short    sequence_m;
  27.   unsigned char        file_id_length;
  28.   char            file_id[1];
  29. } directory_record;
  30.  
  31. typedef char time_and_date[17];
  32.  
  33. typedef struct prim_vol_desc {
  34.   unsigned char        type;
  35.   char            id[5];
  36.   unsigned char        version;
  37.   char            pad1;
  38.   char            system_id[32];
  39.   char            volume_id[32];
  40.   char            pad2[8];
  41.   unsigned long        space_size_i;
  42.   unsigned long        space_size_m;
  43.   char            pad3[32];
  44.   unsigned short    set_size_i;
  45.   unsigned short    set_size_m;
  46.   unsigned short    sequence_i;
  47.   unsigned short    sequence_m;
  48.   unsigned short    block_size_i;
  49.   unsigned short    block_size_m;
  50.   unsigned long        path_size_i;
  51.   unsigned long        path_size_m;
  52.   unsigned long         l_table;
  53.   unsigned long         opt_l_table;
  54.   unsigned long         m_table;
  55.   unsigned long         opt_m_table;
  56.   directory_record      root;
  57.   char            volume_set_id[128];
  58.   char            publisher_id[128];
  59.   char            data_preparer[128];
  60.   char            application_id[128];
  61.   char            copyright[37];
  62.   char            abstract_file_id[37];
  63.   char            bibliographic_id[37];
  64.   time_and_date        vol_creation;
  65.   time_and_date        vol_modification;
  66.   time_and_date        vol_expiration;
  67.   time_and_date        vol_effective;
  68.   unsigned char        file_structure_version;
  69.   char            pad4;
  70.   char            application_use[512];
  71.   char            reserved[653];
  72. } prim_vol_desc;
  73.  
  74. /* for internal use only: */
  75.  
  76. typedef struct iso_vol_info {
  77.   prim_vol_desc        pvd;
  78.   int            skip;
  79.   unsigned short    blockshift;
  80.   t_bool lowercase;
  81. } t_iso_vol_info;
  82.  
  83. typedef struct iso_obj_info {
  84.   directory_record    *dir;
  85.   unsigned long        parent_loc; /* for files only */
  86. } t_iso_obj_info;
  87.  
  88. t_bool Iso_Init_Vol_Info (VOLUME *p_volume, int p_skip, t_ulong p_offset,
  89.         t_bool lowercase);
  90. t_bool Uses_Iso_Protocol (CDROM *p_cdrom, t_ulong *p_offset);
  91. t_bool Uses_High_Sierra_Protocol (CDROM *p_cdrom);
  92. directory_record *Get_Directory_Record (VOLUME *p_volume,
  93.                     struct directory_record *p_dir,
  94.                     unsigned long p_location,
  95.                     unsigned long p_offset);
  96. CDROM_OBJ *Iso_Create_Directory_Obj (VOLUME *p_volume, unsigned long p_location);
  97.  
  98. #endif /* _ISO9660_H_ */
  99.